package io.github.frailty9.crserver.dso.service;

import com.mybatisflex.core.service.IService
import io.github.frailty9.crserver.model.Reservation;

/**
 * ReservationService
 */
interface ReservationService {
    /**
     * 预约指定资源实例
     * @param uid 用户 ID
     * @param resourceInstanceId 资源实例 ID
     * @param bookUnit 预约数量
     * @return 预约记录 ID
     */
    fun booking(uid: Long, resourceInstanceId: Long, bookUnit: Int): Long

    /**
     * 根据 ID 查询预约记录
     * @param id 预约记录 ID
     * @return 预约记录
     */
    fun getById(id: Long): Reservation?

    /**
     * 根据 ID 取消预约
     * @param reservationId 预约记录 ID
     * @return 是否取消成功
     */
    fun cancel(reservationId: Long): Boolean

    /**
     * 根据用户ID查询预约记录
     * @param uid 用户 ID
     * @return 预约记录列表
     */
    fun getsByUserId(uid: Long): List<Reservation>
}
